#ifndef __BSP_KEY_H
#define __BSP_KEY_H

#include "systick.h"
#include "stm32f10x.h"
extern uint8_t num;               // 数码管显示的数字（0-9）
extern uint8_t led4_flash;        // LED4闪烁触发信号
extern uint8_t micro_pressed;     // 微动按键按下触发信号
extern uint8_t led_cycle;         // LED循环标志
/*定义每个灯的参数设置*/
#define KEY1_GPIO_PORT  GPIOA/*GPIO端口*/
#define KEY1_GPIO_CLK   RCC_APB2Periph_GPIOA/*GPIO时钟*/
#define KEY1_GPIO_PIN   GPIO_Pin_5/*GPIO引脚*/

#define KEY2_GPIO_PORT  GPIOA/*GPIO端口*/
#define KEY2_GPIO_CLK   RCC_APB2Periph_GPIOA/*GPIO时钟*/
#define KEY2_GPIO_PIN   GPIO_Pin_4/*GPIO引脚*/

#define KEY_Micro_GPIO_PORT  GPIOB/*GPIO端口*/
#define KEY_Micro_GPIO_CLK   RCC_APB2Periph_GPIOB/*GPIO时钟*/
#define KEY_Micro_GPIO_PIN   GPIO_Pin_11/*GPIO引脚*/

#define GETKEY1()   		GPIO_ReadInputDataBit(KEY1_GPIO_PORT,KEY1_GPIO_PIN)
#define GETKEY2()  			GPIO_ReadInputDataBit(KEY2_GPIO_PORT,KEY2_GPIO_PIN)
#define GETKEY_Micro()  	GPIO_ReadInputDataBit(KEY_Micro_GPIO_PORT,KEY_Micro_GPIO_PIN)

#define GPIO_AFIO_CLK 	  RCC_APB2Periph_AFIO		
/*KEY1*/
#define KEY1_INT_EXTI_PORTSOURCE  GPIO_PortSourceGPIOA
#define KEY1_INT_EXTI_PINSOURCE   GPIO_PinSource5
#define KEY1_INT_EXTI_LINE        EXTI_Line5
#define KEY1_INT_EXTI_IRQ         EXTI9_5_IRQn

/*KEY2*/
#define KEY2_INT_EXTI_PORTSOURCE  GPIO_PortSourceGPIOA
#define KEY2_INT_EXTI_PINSOURCE   GPIO_PinSource4
#define KEY2_INT_EXTI_LINE        EXTI_Line4
#define KEY2_INT_EXTI_IRQ         EXTI4_IRQn

/*KEYmicro*/
#define KEY_Micro_INT_EXTI_PORTSOURCE  GPIO_PortSourceGPIOB
#define KEY_Micro_INT_EXTI_PINSOURCE   GPIO_PinSource11
#define KEY_Micro_INT_EXTI_LINE        EXTI_Line11
#define KEY_Micro_INT_EXTI_IRQ         EXTI15_10_IRQn

void KEY_GPIO_Config(void);
void KEY_INT_GPIO_Config(void);
static void NVIC_Configuration(void);
uint8_t KEY1_SCAN(void);
uint8_t KEY2_SCAN(void);
uint8_t KEY_Micro_SCAN(void);
void KEY1_SCAN_FLAG(void);
void KEY2_SCAN_FLAG(void);
void KEY_Micro_SCAN_FLAG(void);

#endif
